package com.ctshk.rpc.tour.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import com.ctshk.common.model.BaseEntity;
import com.ctshk.common.model.IBaseEntity;
import com.ctshk.rpc.tour.req.CollectionPlaceJson;
import com.ctshk.rpc.tour.req.SelfFeeJson;
import com.ctshk.rpc.tour.req.TourThemeJson;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDate;
import java.time.LocalTime;
import java.util.List;

/**
 * <p>
 * 系列团行程
 * </p>
 *
 * @author 谢诗宏
 * @since 2021-01-12
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName(value = "t_series_trip",autoResultMap = true)
@ApiModel(value="SeriesTrip对象", description="系列团行程")
public class SeriesTrip extends BaseEntity implements IBaseEntity {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "行程标题")
    private String title;

    @ApiModelProperty(value = "副标题")
    private String subtitle;

    @TableField(typeHandler = FastjsonTypeHandler.class)
    @ApiModelProperty(value = "行程特色JSON")
    private List<String> tripFeaturesJson;

    @ApiModelProperty(value = "目的地主数据ID")
    private Long destinationId;

    @ApiModelProperty(value = "目的地")
    private String destination;

    @ApiModelProperty(value = "出发地主数据ID")
    private Long departurePlaceId;

    @ApiModelProperty(value = "出发地")
    private String departurePlace;

    @ApiModelProperty(value = "旅游组别主数据ID")
    private Long tourTypeId;

    @ApiModelProperty(value = "旅游组别名称")
    private String tourTypeName;

    @ApiModelProperty(value = "旅行团种类主数据ID")
    private Long groupTypeId;

    @ApiModelProperty(value = "旅行团种类名称")
    private String groupTypeName;

    @ApiModelProperty(value = "团队性质主数据ID")
    private Long groupNatureId;

    @ApiModelProperty(value = "团队性质名称")
    private String groupNatureName;

    @TableField(typeHandler = FastjsonTypeHandler.class)
    @ApiModelProperty(value = "旅行团主题JSON")
    private List<TourThemeJson> tourThemeJson;

    @ApiModelProperty(value = "行程有效期类型")
    private Integer tripPeriodType;

    @ApiModelProperty(value = "行程起始日期")
    private LocalDate tripBeginDate;

    @ApiModelProperty(value = "行程结束日期")
    private LocalDate tripEndDate;

    @ApiModelProperty(value = "行程码")
    private String tripCode;

    @ApiModelProperty(value = "出行天数")
    private Integer travelDays;

    @ApiModelProperty(value = "含几晚")
    private Integer nightDays;

    @TableField(typeHandler = FastjsonTypeHandler.class)
    @ApiModelProperty(value = "集合地点JSON")
    private List<CollectionPlaceJson> collectionPlaceJson;

    @TableField(typeHandler = FastjsonTypeHandler.class)
    @ApiModelProperty(value = "解散地区JSON")
    private List<CollectionPlaceJson> dissolutionAreaJson;

    @ApiModelProperty(value = "去程咨询")
    private String departureConsulation;

    @ApiModelProperty(value = "去程时间")
    private LocalTime departureTime;

    @ApiModelProperty(value = "去程时间类型（1：首天  2：前一天）")
    private Integer departureTimeType;

    @ApiModelProperty(value = "返程时间类型（1：首天  2：前一天）")
    private Integer returnTimeType;

    @ApiModelProperty(value = "去程到达时间类型")
    private Integer goArriveDateType;

    @ApiModelProperty(value = "去程到达时间")
    private LocalTime goArriveTime;

    @ApiModelProperty(value = "去程交通类型主数据ID")
    private Long departureTrafficTypeId;

    @ApiModelProperty(value = "去程交通类型")
    private String departureTrafficType;

    @ApiModelProperty(value = "返程咨询")
    private String returnConsulation;

    @ApiModelProperty(value = "返程时间")
    private LocalTime returnTime;

    @ApiModelProperty(value = "返程达到时间类型")
    private Integer returnArriveDateType;

    @ApiModelProperty(value = "返程到达时间")
    private LocalTime returnArriveTime;

    @ApiModelProperty(value = "返程交通类型主数据ID")
    private Long returnTrafficTypeId;

    @ApiModelProperty(value = "返程交通类型")
    private String returnTrafficType;

    @TableField(typeHandler = FastjsonTypeHandler.class)
    @ApiModelProperty(value = "轮播图JSON")
    private List<String> rotatePicturesJson;

    @TableField(typeHandler = FastjsonTypeHandler.class)
    @ApiModelProperty(value = "视频url")
    private List<String> videoUrl;

    @ApiModelProperty(value = "封面图")
    private String coverPhotoUrl;

    @ApiModelProperty(value = "负责人ID")
    private Long chargePersonId;

    @ApiModelProperty(value = "负责人员工号")
    private String chargePersonNumber;

    @ApiModelProperty(value = "负责人姓名")
    private String chargePersonName;

    @ApiModelProperty(value = "OP的ID")
    private Long opId;

    @ApiModelProperty(value = "OP的员工号")
    private String opNumber;

    @ApiModelProperty(value = "OP姓名")
    private String opName;

    @ApiModelProperty(value = "是否需要保险")
    private Integer needInsurance;

    @ApiModelProperty(value = "是否需要签证")
    private Integer needVisa;

    @ApiModelProperty(value = "内部摘要")
    private String internalSummary;

    @ApiModelProperty(value = "顾客须知")
    private String customerRights;

    @ApiModelProperty(value = "门市摘要")
    private String shopSummary;

    @ApiModelProperty(value = "行程类型")
    private Integer itineraryType;

    @ApiModelProperty(value = "简易行程文本")
    private String simpleItinerary;

    @ApiModelProperty(value = "团费包含")
    private String tourFeeInclude;

    @ApiModelProperty(value = "团费不包含")
    private String tourFeeExclude;

    @TableField(typeHandler = FastjsonTypeHandler.class)
    @ApiModelProperty(value = "自费项目json")
    private List<SelfFeeJson> selfFeeJson;

    @ApiModelProperty(value = "自费备注")
    private String selfFeeRemark;

    @ApiModelProperty(value = "报名须知")
    private String signNotice;

    @ApiModelProperty(value = "备注")
    private String remark;

    @ApiModelProperty(value = "上传PDF简章")
    private String pdfUrl;

    @ApiModelProperty(value = "成本分摊模板类型")
    private Integer costSharingType;

    @ApiModelProperty(value = "创建人")
    private Long createId;

    @ApiModelProperty(value = "修改人")
    private Long modifiedId;

    @ApiModelProperty(value = "删除标识")
    private Integer isDeleted;

    @ApiModelProperty(value = "自营权限类型")
    private Integer selfSalePermissionType;

    @ApiModelProperty(value = "代理商权限类型")
    private Integer agentSalePermissionType;

    @ApiModelProperty(value = "状态（1：无效，2：审批中 3：有效 4：审批不通过）")
    private Integer status;

    @ApiModelProperty(value = "状态（1：未上传，2：已上传")
    private Integer ticStatus;

    @ApiModelProperty(value = "当前步骤")
    private Integer currentStep;

    @ApiModelProperty(value = "审批id")
    private Long approvalId;

    @ApiModelProperty(value = "是否当季热卖")
    private Integer isHot;

    @ApiModelProperty(value = "业务类型：1:出境游 2:入境游")
    private Integer businessType;

    @ApiModelProperty(value = "旅游组别编码")
    private String tourGroupCode;

}
